critical section problem solution in os